package com.example.demo.service;

import com.example.demo.entity.Category;

import java.util.List;

/**
 * 分类服务接口
 * 定义分类相关业务操作
 */
public interface CategoryService {
    
    /**
     * 根据ID获取分类
     * @param id 分类ID
     * @return 分类信息
     */
    Category getCategoryById(Long id);
    
    /**
     * 根据名称获取分类
     * @param name 分类名称
     * @return 分类信息
     */
    Category getCategoryByName(String name);
    
    /**
     * 获取所有分类列表
     * @return 分类列表
     */
    List<Category> getAllCategories();
    
    /**
     * 获取有文章的分类列表
     * @return 有文章的分类列表
     */
    List<Category> getCategoriesWithArticles();
    
    /**
     * 创建分类
     * @param category 分类信息
     * @return 创建的分类
     */
    Category createCategory(Category category);
    
    /**
     * 更新分类
     * @param category 分类信息
     * @return 更新后的分类
     */
    Category updateCategory(Category category);
    
    /**
     * 删除分类
     * @param id 分类ID
     * @return 是否成功
     */
    boolean deleteCategory(Long id);
    
    /**
     * 更新分类文章数量
     * @param categoryId 分类ID
     */
    void updateArticleCount(Long categoryId);
    
    /**
     * 获取分类总数
     * @return 分类总数
     */
    long getTotalCategoryCount();
}
